package com.ali.dao.slave;

import com.ali.entity.Order;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

@Mapper
public interface SlaveOrderMapper {
    /**
     * 增加订单
     */
    int add(@Param("order") Order order);

    /**
     * 修改订单
     */
    int update(Map<String, Object> param);

    /**
     * 删除订单
     */
    int delete(Map<String, Object> param);

    /**
     * 查询订单
     */
    List<Order> queryOrder(Map<String, Object> param);

    /**
     * 根据ID查询订单
     */
    List<Order> queryOrderById(Map<String, Object> param);

    //技术测试

    /**
     * $：字符串拼接
     */
    Order queryTest1(Map<String, Object> param);

    /**
     * 自定义返回Map
     */
    List<Order> queryTest2(Map<String, Object> param);

    /**
     * where：自动生成where关键字，并去掉内容前多余的and或者or
     */
    List<Order> queryTest3(Map<String, Object> param);

    /**
     * trim：prefix（内容前添加），suffix（内容后添加），prefixOverrides（内容前删除），suffixOverrides（内容后删除）
     */
    List<Order> queryTest4(Map<String, Object> param);

    /**
     * choose，when，otherwise：相当于if -> else if -> else
     */
    List<Order> queryTest5(Map<String, Object> param);

    /**
     * bind：绑定变量
     */
    List<Order> queryTest6(Map<String, Object> param);

    /**
     * foreach：collection（循环集合），item（集合中单个数据），separator（分隔符），open（开始符），close（结束符）
     */
    List<Order> queryTest7(Map<String, Object> param);

    /**
     * sql：设置sql片段
     * include：引入sql片段
     */
    List<Order> queryTest8(Map<String, Object> param);

    /**
     * &gt;=：大于等于
     * &lt;=：小于等于
     */
    List<Order> queryTest9(Map<String, Object> param);

    /**
     * 自定义返回类型
     */
    int queryTest10(Map<String, Object> param);

    /**
     * 级联查询，单个子对象
     */
    List<Order> queryTest11(Map<String, Object> param);

    /**
     * 级联查询，单个子对象
     */
    List<Order> queryTest12(Map<String, Object> param);

    /**
     * 级联查询，集合子对象
     */
    List<Order> queryTest13(Map<String, Object> param);

    /**
     * 分步查询
     */
    Order queryTest14(Map<String, Object> param);

    /**
     * 分步查询
     */
    Order queryTest15(Map<String, Object> param);

    /**
     * 分页查询
     */
    List<Order> queryPageTest(Map<String, Object> param);

    /**
     * 不使用缓存
     */
    List<Order> queryCacheTest1(Map<String, Object> param);

    /**
     * 刷新缓存
     */
    List<Order> queryCacheTest2(Map<String, Object> param);
}